package com.travelsmart.client.apresentacao.widget;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.travelsmart.client.apresentacao.controller.CommandController;

/**
 * contém dois botões (próximo e anterior).
 * A principal função da barra de navegação é gerenciar os cliques nos botões de próximo e anterior. 
 * A barra será exibida abaixo da lista.
 * Para capturar os cliques de próximo ou anterior no construtor dos botões são definidos ClickHandler
 * @author arthur
 *
 */
public class FormBarraNavegacao extends Composite {
	 
	private HorizontalPanel horizontalPanel = new HorizontalPanel();

	  public Button btnProxima = new Button("&gt;", new ClickHandler() {
		
		@Override
		public void onClick(ClickEvent event) {
			paginaAtual++;
			handler.handleSuccess(paginaAtual);
		}
	});
	  public Button btnAnterior = new Button("&lt;", new ClickHandler() {
		@Override
		public void onClick(ClickEvent event) {
			paginaAtual--;
			handler.handleSuccess(paginaAtual);
		}
	});
	  private int paginaAtual = 0;
	  final CommandController<Integer> handler;

	  public FormBarraNavegacao(final CommandController<Integer> handler) {
	    // relaciona a view com o controller
		this.handler = handler;
	    horizontalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
	    horizontalPanel.add(btnAnterior);
	    horizontalPanel.add(btnProxima);
	    btnAnterior.setEnabled(false);
	    initWidget(horizontalPanel);
	  }

	  public void isUltimaPagina(boolean valor) {
		btnProxima.setEnabled(!valor);	  
	    btnAnterior.setEnabled(paginaAtual > 0);
	  }


}
